The advent of virtualization technologies for computing resources has provided benefits with respect to managing large-scale computing resources for many customers with diverse needs and has allowed various computing resources or computing services to be efficiently and securely shared by multiple customers. For example, virtualization technologies may allow a single physical computing machine to host multiple computing instances using a hypervisor. Each computing instance may be a guest machine acting as a distinct logical computing system on the physical computing machine (i.e., a physical host). Computing instances may be logically grouped into distributed computing clusters where the computing instances communicate via a network. A number of distributed computing clusters may be used in some cases to execute a distributed system, such as a distributed database system, distributed file system, peer-to-peer systems, etc.
A distributed system may utilize a distributed program or application to facilitate communications and coordinate actions between a number of distributed computing clusters and computing instance nodes by exchanging messages between various components included in the distributed system. A characteristic of a distributed system that may contribute to the performance of the distributed system may be independent failures of distributed system components, such as a distributed computing cluster, a computing instance node or a computing module executing on a computing instance node. In some cases, a distributed computing system may continue to operate after experiencing an independent failure, whereas in other cases the independent failure may cause the distributed computing system to shut down.